/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifconnect.view.managedBean;

import ifconnect.model.dao.DaoGenerico;
import ifconnect.model.entity.Campus;
import ifconnect.model.entity.Curso;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Fidélis
 */
@ManagedBean(name = "cursoMB")
@ViewScoped
public class CursoMB implements Serializable {

    private Curso curso;
    private Curso cursoSelecionado;
    private List<Curso> listaCursos;
    private List<Campus> listCampus;
    private DaoGenerico daoGenerico;
    private Long idCampus;

    public CursoMB() {
        this.curso = new Curso();
        this.cursoSelecionado = new Curso();
        this.daoGenerico = new DaoGenerico();
        this.listCampus = this.daoGenerico.listarTodos(Campus.class);
        this.listaCursos = this.daoGenerico.listarTodos(Curso.class);
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public Curso getCursoSelecionado() {
        return cursoSelecionado;
    }

    public void setCursoSelecionado(Curso cursoSelecionado) {
        this.cursoSelecionado = cursoSelecionado;
    }

    public List<Campus> getListCampus() {
        return listCampus;
    }

    public void setListCampus(List<Campus> listCampus) {
        this.listCampus = listCampus;
    }

    public List<Curso> getListaCursos() {
        return listaCursos;
    }

    public void setListaCursos(List<Curso> listaCursos) {
        this.listaCursos = listaCursos;
    }

    public Long getIdCampus() {
        return idCampus;
    }

    public void setIdCampus(Long idCampus) {
        this.idCampus = idCampus;
    }

    public void addCurso() {
        Campus donoCurso = this.buscaCampos(this.idCampus);
        this.curso.setCampus(donoCurso);

        String msg = this.daoGenerico.salvar(this.curso);

        FacesMessage message = new FacesMessage(msg);
        message.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext.getCurrentInstance().addMessage(null, message);

        this.idCampus = null;
        this.curso = new Curso();
        this.listaCursos = null;
        this.atualizaLista();
    }

    public void excluirCurso() {
        if (this.cursoSelecionado != null) {
            String msg = this.daoGenerico.remover(this.cursoSelecionado);
            FacesMessage message = new FacesMessage(msg);
            message.setSeverity(FacesMessage.SEVERITY_INFO);
            FacesContext.getCurrentInstance().addMessage(null, message);
            
            this.listaCursos = null;
            this.atualizaLista();
        }
    }
    
    public void atualizaCurso(){
        if (this.cursoSelecionado != null) {
            this.curso = this.cursoSelecionado;
            this.idCampus = this.curso.getCampus().getId();
        }
    }

    public void atualizaLista() {
        if (this.listaCursos == null) {
            this.listaCursos = this.daoGenerico.listarTodos(Curso.class);
        }
    }

    private Campus buscaCampos(Long id) {
        for (Iterator<Campus> it = listCampus.iterator(); it.hasNext();) {
            Campus c = it.next();
            if (c.getId() == id) {
                return c;
            }
        }
        return null;
    }
}
